import axiox from 'axios'
//引入路由器
import router from '../router/index.js'
const instance = axiox.create({
    baseURL: '/apigw', //baseURL会在发送请求的时候拼接在url参数的前面
    timeout: 1000 * 60 * 5
})


// 添加请求拦截器,所有的网络请求都会先走这个方法，我们可以在它里面为请求添加一些自定义的内容
instance.interceptors.request.use(config => {
    // 在发送请求之前做些什么
    // 统一为有权限的接口设置 headers 请求头
    // 以 /api 开头的接口不需要设置请求头 表示不需要权限认证
    // 以 / 开头的接口需要设置请求头 表示需要权限认证
    if (config.url.indexOf('/my') !== -1) {
        config.headers.Authorization = window.localStorage.getItem('token');
        // config.headers.Authorization= 'Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6MTEsInVzZXJuYW1lIjoiYWRtaW4iLCJwYXNzd29yZCI6IiIsIm5pY2tuYW1lIjoiTGVlIiwiZW1haWwiOiI2OTQ2NDYyMzZAcXEuY29tIiwidXNlcl9waWMiOiIiLCJpYXQiOjE2MjQxNTc5NTgsImV4cCI6MTYyNzc1Nzk1OH0.i9A77J0ziujMWk7iRbRwgZZl7z6yAhedoxCk5pi1y8I' ;
    }
    config.headers['Content-Type'] = 'application/json' // 请求的数据格式为 json


    return config;
}, error => {
    // 对请求错误做些什么
    return Promise.reject(error);
});

// 添加响应拦截器
// 此处可以根据服务器的返回状态码做响应的处理
// 404 404 500
instance.interceptors.response.use(response => {
    // 由于后端设置了 token 的有效时间 当时间到了后刷新页面就会强制退到登陆页面
    // 对响应数据做点什么
    if (response.data.meta.status === 401) {
        // 1.强制清空 token
        window.localStorage.localStorage('token');
        // 2.强制跳转到登陆页面
        router.push({ path: "/login" });
    }
    return response;
}, error => {
    // 对响应错误做点什么
    return Promise.reject(error);
});

export function get(url, params) {
    // get 方法返回一个 promise 对象
    return instance.get(url, {
        params: params
    })
}

export function post(url, data) {
    // post 方法返回一个 promise 对象
    return instance.post(url, data)
}

export function del(url) {
    return instance.delete(url)
}

export function put(url, data) {
    return instance.put(url, data)
}